home *** CD-ROM | disk | FTP | other *** search
/ Collection of Internet / Collection of Internet.iso / faq / comp / object_f / part3 < prev    next >
Text File  |  1993-12-14  |  60KB  |  1,512 lines

  1. Newsgroups: comp.object,comp.answers,news.answers
  2. Path: senator-bedfellow.mit.edu!bloom-beacon.mit.edu!nic.hookup.net!swrinde!cs.utexas.edu!howland.reston.ans.net!vixen.cso.uiuc.edu!uchinews!news
  3. From: Bob Hathaway <rjh@geodesic.com>
  4. Subject: Comp.Object FAQ Version 1.0.5 (12-13) Part 3/8
  5. Message-ID: <1993Dec14.044430.18185@midway.uchicago.edu>
  6. Followup-To: comp.object
  7. Summary: Frequently Asked Questions (FAQ) List and Available Systems For Object-Oriented Technology
  8. Sender: news@uchinews.uchicago.edu (News System)
  9. Organization: Geodesic Systems
  10. Date: Tue, 14 Dec 1993 04:44:30 GMT
  11. Approved: news-answers-request@MIT.Edu
  12. Lines: 1497
  13. Xref: senator-bedfellow.mit.edu comp.object:13850 comp.answers:2991 news.answers:15749
  14.  
  15. Archive-name: object-faq/part3
  16. Last-Modified: 12/13/93
  17. Version: 1.0.5
  18.  
  19. 3.11) What Is Available On Object-Oriented Testing?
  20. ---------------------------------------------------
  21.  
  22. [This entry was donated by Doug Shaker and is certainly a FAQ]
  23.  
  24. Testing of Object-Oriented Programming (TOOP) FAQ/Resource Summary
  25.  
  26. Posted to comp.object, comp.lang.c++, comp.lang.smalltalk and
  27. comp.software.testing.
  28.  
  29. Last revised on 93.10.27.  The most notable change is in the additions
  30. to the Software section.  Also a couple of articles added to the
  31. Written Material section.
  32.  
  33.  
  34. > What?
  35.  
  36. This is a summary of resources on the Testing of Object-Oriented
  37. Programming that have been mentioned to me over the net, in email,
  38. or other means.  Sections include Written Material, Courses, and
  39. Software.  It is kind of like an FAQ, though it isn't organized 
  40. that way.
  41.  
  42. > Who?
  43.  
  44. I work for a Unix software house, Qualix Group, in the US.   Here is
  45. my sig:
  46.  - Doug Shaker
  47.     voice:    415/572-0200
  48.     fax:    415/572-1300
  49.     email:    dshaker@qualix.com
  50.     mail:    Qualix Group
  51.         1900 S. Norfolk St., #224
  52.         San Mateo, CA 94403
  53. I am NOT a researcher on the testing of object-oriented programming.
  54. I just collate the stuff that is sent to me by people who REALLY know
  55. something.  See the section "ACKs" at the end.
  56.  
  57. I just think it is important.
  58.  
  59. > Why?
  60.  
  61. Why is this important? If classes are really to be reused in
  62. confidence, they must be blatantly correct.  The classes must be easily
  63. testable during initial evaluation by the client programmer.  They must
  64. also be testable under different OS configurations, different compiler
  65. optimizations, etc.  This means that testing modules must be
  66. constructed in a way which is recognized as correct and the modules
  67. must be shipped with the class libraries.  
  68.  
  69. As soon as one major class library vendor starts to ship real test code
  70. with their libraries, all of the other vendors will be forced, by
  71. market pressure, to do so as well, or face market share erosion.  Think
  72. about it.  If you had to recommend a class library to a committee that
  73. was choosing a basis for the next five years of work, wouldn't you feel
  74. safer with a class library that could be auto-tested in your
  75. environment?
  76.  
  77.  
  78. > Written Material
  79.  
  80. Berard, Edward.  Essays on Object-Oriented Software Engineering.  
  81.     Prentice-Hall, Englewood Cliffs, NJ. $35.
  82.     This book has two chapters on testing of object-oriented software, 
  83.     focusing on how to do it.
  84.  
  85. Berard, Edward.  Project Management Handbook.  Must be purchased
  86.     direct from Berard Software Engineering, Ltd., 902 Wind River
  87.     Lane, Suite 203, Gaithersburg, Maryland 20878.  $225.
  88.     The book focuses on the management of OOP projects.  It
  89.     includes one chapter on testing OO software and one chapter
  90.     on quality assurance.
  91.  
  92. Bezier, Boris, "Software Testing Techniques", 2nd edition, Van Nostrand
  93.     Reinhold, 1990, 503pp, $43, ISBN 0-442-20672-0.  While this is
  94.     not specifically about testing of OOP, it is mentioned so often
  95.     by so many people as a definitive software testing work, that
  96.     I have to mention it anyway.
  97.  
  98. Cheatham Thomas J., and Lee Mellinger, "Testing Object-Oriented
  99.     Software Systems",  Proceedings of the 18th ACM Annual Computer
  100.     Science Conference, ACM, Inc., New York, NY, 1990, pp. 161-165.
  101.  
  102. Doong, Roong-Ko and Phyllis G. Frankl, "Case Studies on Testing 
  103.     Object-Oriented Programs", Proceedings of the 4th Symposium on
  104.     Testing, Analysis, and Verification (TAV4), 1991, ACM, Inc.,
  105.     New York, NY, 1991, pp. 165-177.
  106.  
  107. Fiedler, Steven P., "Object-Oriented Unit Testing", Hewlett-Packard 
  108.     Journal, April, 1989, pp. 69-74.
  109.  
  110. Firesmith, D.G., "Testing Object-Oriented Software", Proceedings 
  111.     of 11th. TOOLS USA Conference, Santa Barbara, Aug 1993, pp 407-426.
  112.  
  113. Frankl, Phyllis G. and Roong-Ko Doong, "Tools for Testing 
  114.     Object-Oriented Programs", Proceedings of the 8th Pacific
  115.     Northwest Conference on Software Quality, 1990, pp. 309-324.
  116.     One author can be reached at pfrankl@polyof.poly.edu.
  117.  
  118. Graham, J.A., Drakeford, A.C.T., Turner, C.D. 1993. The Verification, 
  119.     Validation and Testing of Object Oriented Systems, BT Technol
  120.     J.  Vol 11, No 3. One author's email address is
  121.     jgraham@axion.bt.co.uk.
  122.  
  123. Harrold, Mary Jean, John D. McGregor, and Kevin J. Fitzpatrick, 
  124.     "Incremental Testing of Object-Oriented Class Structures",
  125.     International Conference on Software Engineering, May, 1992,
  126.     ACM, Inc., pp. 68 - 80.
  127.  
  128. Hoffman, Daniel and Paul Strooper.  A Case Study in Class Testing.
  129.     To be Presented at the IBM Center for Advanced Studies Fall
  130.     Conference, October 1993, Toronto.  Email addresses for authors
  131.     are dhoffman@csr.uvic.ca and pstropp@cs.uq.oz.au.  Describes an
  132.     approach to testing which the authors call Testgraphs.  An
  133.     example is worked out in C++ which tests a commercial class.
  134.  
  135. Hoffman, D. M.  A CASE Study in Module Testing.  In Proc. Conf. Software
  136.     Maintenance, pp. 100-105. IEEE Computer Society, October 1989.
  137.  
  138. Hoffman, D.M. and P.A. Strooper.  Graph-Based Class Testing.  In 
  139.     7th Australian Software Engineering Conference (to appear), 1993.
  140.  
  141. Klimas, Edward "Quality Assurance Issues for Smalltalk Based Applications", 
  142.     The Smalltalk Report, Vol. 1, No. 9, pp.3-7.  The author's
  143.     email address is "ac690@cleveland.freenet.edu".
  144.  
  145. Lakos, John S.  "Designing-In Quality in Large C++ Projects" Presented
  146.     at the 10th Annual Pacific Northwest Software Quality Conference,
  147.     Portland, Oregon, October 21, 1993.  Abstract:
  148.         The focus of this paper is on ensuring quality by
  149.         designing software that avoids acyclic component
  150.         dependencies.  This in-turn permits incremental,
  151.         hierarchical testing.  The importance of good physical
  152.         design becomes a key factor only for large and very
  153.         large projects.  Intuition gained from smaller projects
  154.         leads to errors in large designs.  Compile-coupling
  155.         ("Insulation") is also discussed.
  156.     Copies of the postscript file can be obtained by sending email
  157.     to "john_lakos@warren.mentorg.com".
  158.  
  159. Leavens, G. T., "Modular Specification and Verification of 
  160.     Object-Oriented Programs", IEEE Software, July 1991, pp. 72-80.
  161.  
  162. Love, Tom.  Object Lessons.  SIGS Books, 588 Broadway #604, New York, NY 
  163.     10012. $49.
  164.     This book eloquently elucidates the need for testing of object-
  165.     oriented code and has a chapter on how it was done at Stepstone
  166.     during the first release of their initial class library.
  167.  
  168. Marick, Brian.  The Craft of Software Testing, Prentice-Hall, in press.
  169.     Makes the argument that testing of object-oriented software is
  170.     simply a special case of testing software which retains state
  171.     and which is resused.  The author can be reached at 
  172.     info@testing.com.
  173.  
  174. Narick, Brian. "Testing Software that Reuses", Technical Note 2, Testing
  175.     Foundations, Champaign, Illinois, 1992. Copies may be obtainable 
  176.     via email. The author can be reached at info@testing.com.
  177.  
  178. Murphy, G.C., Wong, P. 1992, Towards a Testing Methodology for 
  179.     Object Oriented Systems, M.P.R Teltech Ltd. A poster at the
  180.     Conference on Object Oriented Programming Systems, Languages
  181.     and Applications ACM. Copies of this paper can be obtained
  182.     through townsend@mprgate.mpr.ca.
  183.  
  184. Murphy, G. and P. Wong.  Object-Oriented Systems Testing Methodlogy: An
  185.     Overview.  Techical Report TR92-0656, MPR Teltech Ltd., October 
  186.     1992.
  187.  
  188. Perry, D.E. and G.E. Kaiser, "Adequate Testing and Object-Oriented 
  189.     Programming", Journal of Object-Oriented Programming, 
  190.     2(5):13-19, Jan/Feb 1990.
  191.  
  192. Purchase, Jan A. and Russel L. Winder, "Debugging tools for 
  193.     object-oriented programming", Journal of Object-Oriented 
  194.     Programming, June, 1991, Vol. 4, No. 3, pp. 10 - 27.
  195.  
  196. Smith, M. D. and D. J. Robson, " A Framework for Testing Object-Oriented 
  197.     Programs", JOOP, 5(3):45-53, June 1992.
  198.     Describes ways in which the usual approach to software testing
  199.     could be adapted for object-oriented software.
  200.     This paper, or one with the same title and authors, is
  201.     available by anonymouns ftp from vega.dur.ac.uk as
  202.     "/pub/papers/foot.dvi".
  203.  
  204. Smith, M. D. and D. J. Robson, "Object-Oriented Programming - the 
  205.     Problems of Validation",  Proceedings of the 6th International 
  206.     Conference on Software Maintenance 1990, IEEE Computer Society 
  207.     Press, Los Alamitos, CA., pp. 272-281.
  208.  
  209. Taylor, David. "A quality-first program for object technology", Object 
  210.     Magazine, Vol. 2, No. 2, July-August 1992, pp17-18. SIGs
  211.     Publications.  The article talks some about why testing is
  212.     important for OOP and describes one quality program.
  213.  
  214. Theilen, David.  "No Bugs.  Delivering error free code in C and C++.",
  215.     Addison-Wesley, 1992, ISBN:0-201-60890-1.
  216.  
  217. Turner, C. D. and D. J. Robson, "The Testing of Object-Oriented Programs",
  218.     Technical Report TR-13/92, Computer Science Division, School of
  219.     Engineering and Computer Sciences (SECS), University of Durham,
  220.     England.
  221.     Includes a survey of existing literature on testing of OO
  222.     programs.  Testing of OOP is compared with traditional software
  223.     testing.  A state-based approach is described.
  224.     This paper is available by anonymous ftp from vega.dur.ac.uk in
  225.     /pub/papers. Get "toop.ps.Z" for A4 paper and "toopus.ps.Z" for
  226.     US letter paper formatting.
  227.  
  228. Turner, C. D. and D. J. Robson, "A Suite of Tools for the State-Based
  229.     Testing of Object-Oriented Programs", Technical Report
  230.     TR-14/92, Computer Science Division, School of Engineering and
  231.     Computer Science (SECS), University of Durham, Durham,
  232.     England.  Describes a series of tools for the generation and
  233.     execution of test cases for OOP.  These tools assume a
  234.     state-based testing approach.
  235.     This paper is available by anonymous ftp from vega.dur.ac.uk in
  236.     /pub/papers.  Get "tools.ps.Z" for A4 paper formatting or get
  237.     "toolsus.ps.Z" for US letter formatting.
  238.  
  239. Turner, C. D. and D. J. Robson, "Guidance for the Testing of Object-
  240.     Oriented Programs", Technical Report TR-2/93, Computer Science
  241.     Division, School of Engineering and Computer Science (SECS),
  242.     University of Durham, Durham, England.  Discusses different
  243.     methods of making class declarations and the implications of
  244.     those methods for testing.
  245.     This paper is available by anonymous ftp from vega.dur.ac.uk in
  246.     /pub/papers.  Get "guide.ps.Z" for A4 paper formatting or get
  247.     "guideus.ps.Z" for US letter formatting.
  248.  
  249. Turner, C. D. and D. J. Robson, "State-Based Testing and Inheritance",
  250.     Technical Report TR-1/93, Computer Science Division, School of
  251.     Engineering and Computer Science (SECS), University of Durham,
  252.     Durham, England.
  253.     Discusses the implications of inheritance for testing,
  254.     particularily incremental testing.
  255.     This paper is available by anonymous ftp from vega.dur.ac.uk in
  256.     /pub/papers.  Get toopinht.ps.Z" for A4 paper formatting or get
  257.     "toopinhtus.ps.Z" for US letter formatting.
  258.  
  259. Wong, P. Automated Class Exerciser (ACE) User's Guide.  Technical
  260.     Report TR92-0655, MPR Teltech Ltd., September 1992.
  261.  
  262. > Courses
  263.  
  264. Berard Software Engineering, Inc. teaches a seminar on Testing of
  265. Object-Oriented Software (TOOS).  The next one scheduled that I know of
  266. is November 8-12, in Washington.  Call 301-417-9884 for details.
  267.  
  268. Quality Fractals, Inc. has a course called "Testing Object-Oriented
  269. Software".  Contact: 508-359-7273 (Box 337, Medfield, MA 02052).  The
  270. course is taught by Shel Siegel of YESS!, Inc.  Contact: 916-944-1032.
  271.  
  272.  
  273. > Software
  274.  
  275. There is a smalltalk class library in the Univ. of Illinois archives
  276. which includes a simple Tester class written by Bruce Samuelson
  277. (bruce@utafll.uta.edu). It is a general superclass for application
  278. specific classes that test non-interactive objects such as trees,
  279. collections, or numbers. It is not suitable for testing user interface
  280. components such as windows, cursors, or scroll bars. The filein
  281. includes Tree classes, Tester itself, and subclasses of Tester that are
  282. used to validate the Tree classes. For ParcPlace Smalltalk (ObjectWorks
  283. 4.1 and VisualWorks 1.0). To get it ftp the file
  284. "/pub/st80_vw/TreeLW1.1" from st.cs.uiuc.edu.
  285.  
  286. IPL Ltd. (in the UK) has a testing tool called Cantata which allows for
  287. testing C++, but as far as I am able to determine, it has no special
  288. features for C++ testing.  From the product literature:
  289.     Cantata allows testing to be performed in an intuitive way
  290.     making the tool exceptionally easy to use and productive in
  291.     operation. Cantata is suitable for testing software written in
  292.     either C or C++.
  293.  
  294.     Cantata provides comprehensive facilities for all forms of
  295.     dynamic testing, including: functional testing, structural
  296.     testing, unit testing and integration testing. Cantata has been
  297.     specifically designed to operate in both host and target
  298.     systems and so allow full portability of tests between these
  299.     environments.
  300. For more information contact IPL:
  301.     IPL Ltd.
  302.     Eveleigh House, Grove Street, 
  303.     Bath  BA1 5LR
  304.     UK
  305.     (0225) 444888
  306.     (0225) 444400 (FAX)
  307.     email: shaun@iplbath.demon.co.uk
  308.  
  309. TestCenter from CenterLine will do coverage testing of C++ (and C)
  310. code.  Also does some memory debugging (similar to Purify) and regression
  311. testing.  Highlights from CenterLine literature:
  312.   *Automatic run-time error-checking on executables to enhance quality 
  313.   *Automatic memory leak detection on executables to optimize memory use
  314.   *Graphical test coverage to highlight any code not executed during test runs
  315.   *Intuitive GUI for easy test analysis 
  316.   *Programmatic interface to output files and cumulative code coverage 
  317.    to support batch-mode and regression testing
  318.   *No recompilation needed, resulting in quick turnaround
  319.   *Complete C and C++ language support
  320.   *Integration with leading programming tools for maximum productivity gains
  321.  
  322. MicroTech Pacific Research (mpr.ca) has a C++ class testing tool called
  323. ACE (Automated Class Exerciser) which is available under non-disclosure
  324. agreement.  It is not currently for sale.  If you are interested,
  325. contact Paul Townsend, townsend@mprgate.mpr.ca.
  326.  
  327. Software Research Inc. (625 Third St, San Francisco, CA 94107-1997,
  328. voice: 1-415-957-1441, email: info@soft.com) has a coverage tool for C++
  329. that is called tcat++.  It is an extension of SRI's tcat program.
  330.  
  331. Quality Assured Software Engineering (938 Willowleaf Dr., Suite 2806,
  332. San Jose, CA 95128, voice: 1-408-298-3824 ) has a coverage tool for
  333. C and C++ called MetaC.  It also dones some syntax checking and memory
  334. allocation checking.
  335.  
  336. A group of volunteers is building a C++ test harness for the automated
  337. testing of C++, C and Perl programs.  The system is called ETET (Extended
  338. Test Environment Toolkit).  To join the group of volunteers, send email to
  339.     etet_support@uel.co.uk
  340. The software is available via anonymous FTP from bright.ecs.soton.ac.uk
  341. (152.78.64.201) as "/pub/etet/etet1.10.1.tar.Z".  They are looking for
  342. other FTP sites - sned email to the above address if you can provide
  343. one.  This is a beta release and _should_ compile on any POSIX.1 system.
  344. As much of this work is being done by SunSoft, my guess is that the
  345. software will have the fewest problems on SunOS or Solaris releases.
  346.  
  347. > ACKs
  348.  
  349. Thanks to the following for helping assemble this list:
  350.     Benjamin C. Cohen, bcohen@scdt.intel.com
  351.     Brian Marick, marick@hal.cs.uiuc.edu
  352.     Bruce Samuleson, bruce@utafll.uta.edu
  353.     Daniel M. Hoffman, dhoffman@uvunix.uvic.ca
  354.     Edward Klimas, ac690@cleveland.freenet.edu
  355.     John Graham, J.Graham@axion.bt.co.uk
  356.     Jim Youlio, jim@bse.com
  357.     Jeffery Brown, jeffrey.brown@medtronic.com
  358.     Lars Jonsson, konlajo@etna.ericsson.se
  359.     Manfred Scheifert, ch_schie@rcvie.co.at
  360.     Mark Swanson, mswanson@mechmail.cv.com
  361.     Mary L. Schweizer, mary@gdwest.gd.com
  362.     Michael Einkauf, Michael_Einkauf@iegate.mitre.org
  363.     Paul Townsend, townsend@mprgate.mpr.ca
  364.     Phyllis G. Frankl, pfrankl@polyof.poly.edu
  365.     Rachel Harrison, rh@ecs.soton.ac.uk
  366.     Risto Hakli, rkh@tko.vtt.fi
  367.     Russ Hopler, russ@bse.com
  368.     Stephane Barbey, barbey@di.epfl.ch
  369.     Tony Reis, tonyr@hpsadln.sr.hp.com
  370.     Yawar Ali, yali@bnr.ca
  371.  
  372.  
  373. 3.12) What Distributed Systems Are Available?
  374. ---------------------------------------------
  375.  
  376. The following post helps to provide some answers with at least a partial list.
  377. See also Appendix E.
  378.  
  379. From: rmarcus@bcsaic.boeing.com (Bob Marcus)
  380. Newsgroups: comp.object,comp.client-server
  381. Subject: Distributed Computing Products Overview
  382. Date: 17 Sep 93 00:02:40 GMT
  383. Organization: Boeing Computer Services
  384.            
  385.              DISTRIBUTED COMPUTING PRODUCTS OVERVIEW
  386.  
  387.   There was a recent posting concerning the relationship between OMG's CORBA
  388.  and Distributed Transaction Processing Monitors. In general, there is a lot of
  389.  uncertainty as to how the various distributed computing tools, products and
  390.  environments might work together.  Below is the outline of an eight-page
  391.  posting to the Corporate Facilitators of  Object-Oriented Technology (CFOOT)
  392.  mailing list addressing these issues. Let me know if you would like a copy
  393.  of the posting and/or to be added to the CFOOT mailing list. 
  394.      
  395.                                           Bob Marcus 
  396.                                           rmarcus@atc.boeing.com
  397.  -----------------------------------------------------------------------
  398.  SOME GENERAL REFERENCES FOR ADDITIONAL INFORMATION 
  399.  -----------------------------------------------------------------------
  400.  MULTIPROTOCOL NETWORK TRANSPORTS
  401.  
  402.   Peer Logic (PIPES)
  403.   ATT (Transport Layer Interface) 
  404.  -----------------------------------------------------------------------
  405.  MICROKERNELS
  406.  
  407.   OSF(Mach)
  408.   Chorus Systems (Chorus)
  409.   Microsoft (NT)
  410.  -----------------------------------------------------------------------
  411.  REMOTE PROCEDURE CALLS
  412.  
  413.   NobleNet (EZ-RPC)
  414.   Netwise (Netwise-RPC) 
  415.   ATT/Sun (TI-RPC)
  416.   OSF (DCE/RPC)
  417.  -----------------------------------------------------------------------
  418.  CONVERSATIONAL PROGRAMMING
  419.  
  420.   IBM(Common Programming Interface-Communications)
  421.  -----------------------------------------------------------------------
  422.  MESSAGING PRODUCTS
  423.  
  424.   System Strategies/IBM (MQ Series)
  425.   Horizon Strategies (Message Express) 
  426.   Covia Systems(Communications Integrator)
  427.   Momentum Software(X-IPC)
  428.   Creative System Interface (AAI)
  429.   Digital (DECmessageQ)
  430.   HP (Sockets)(BMS)
  431.   IBM (DataTrade)(DAE)
  432.   Suite Software (SuiteTalk)
  433.   Symbiotics (Networks)
  434.  -----------------------------------------------------------------------
  435.  PUBLISH AND SUBSCRIBE MESSAGING 
  436.  
  437.   Sun(Tooltalk)
  438.   Teknekron (Teknekron Information Bus)
  439.   ISIS(Distributed News)
  440.   Expert Database Systems (Rnet)
  441.  ----------------------------------------------------------------------
  442.  DISTRIBUTED COMPUTING ENVIRONMENTS
  443.  
  444.   OSF/DCE
  445.   ISIS(Distributed Toolkit)
  446.  -----------------------------------------------------------------------
  447.  TRANSACTION PROCESSING MANAGERS 
  448.  
  449.   Unix Systems Lab (Tuxedo) 
  450.   Information Management Company (Open TransPort) 
  451.   NCR (TopEnd)
  452.   Transarc (Encina)
  453.   IBM/HP/Transarc (Open CICS)
  454.  -----------------------------------------------------------------------
  455.  DISTRIBUTED WORKSTATION EXECUTION SYSTEMS
  456.  
  457.   Aggregate Systems (NetShare)
  458.   Platform Computing(Utopia)
  459.   ISIS(Resource Manager)
  460.  -----------------------------------------------------------------------
  461.  OBJECT REQUEST BROKERS 
  462.  
  463.   Hyperdesk (Distributed Object Manager)
  464.   IBM Distributed System Object Model(DSOM)
  465.   Microsoft (Distributed OLE)
  466.   Iona Technologies Ltd. (Orbix) 
  467.   BBN (Cronus)
  468.   ISIS (RDOM)
  469.   Qualix (NetClasses)
  470.   Symbiotics (Networks!)
  471.   Digital(ACA Services) 
  472.   Suite Software (SuiteDOME)
  473.  -----------------------------------------------------------------------
  474.  SYSTEM MANAGEMENT  
  475.  
  476.   OSF (Distributed Management Environment)
  477.   Legent
  478.   Digital Analysis (HyperManagement)
  479.  -----------------------------------------------------------------------
  480.  DISTRIBUTED DEVELOPMENT/EXECUTION PRODUCTS   
  481.  
  482.   Texas Instruments (Information Engineering Facility)
  483.   HP (SoftBench)
  484.   Digital (COHESIONworX) 
  485.  -----------------------------------------------------------------------
  486.  DISTRIBUTED DEVELOPMENT/EXECUTION PRODUCTS   
  487.  
  488.   Independence Technologies (iTRAN)
  489.   Intellicorp(Kappa) 
  490.   ISIS Distributed Systems (RDOM) 
  491.   Early, Cloud & Company (Message Driven processor)
  492.   Expersoft(XShell)
  493.   Cooperative Solutions(Ellipse)
  494.  -----------------------------------------------------------------------
  495.  
  496.  
  497. 3.13) What Is The MVC Framework?
  498. --------------------------------
  499.  
  500. MVC stands for Model-View-Controller.  This framework was originally adopted
  501. in Smalltalk to support Graphical User Interfaces.  Views support graphical
  502. interfacing, controllers handle interaction, and models are the application
  503. objects.  More details and references will be included in future FAQs.
  504.  
  505. "A Cookbook for Using the Model-View-Controller User Interface Paradigm in
  506. Smalltalk-80".  G. E. Krasner and S. T. Pope.  JOOP, vol 1, no 3, August/
  507. September, 1988, pp 26-49,
  508.  
  509.  
  510. 3.14) What is Real-Time?
  511. ------------------------
  512.  
  513. Real-time is our linear extrapolation/perception of imaginary time.
  514.  
  515. [This section is YTBI]
  516.  
  517.  
  518. SECTION 4:  COMMONLY ASKED LANGUAGE SPECIFIC QUESTIONS
  519. ======================================================
  520.  
  521. 4.1)  What is Downcasting?
  522. --------------------------
  523.  
  524. Downcasting is the term used in C++ for casting a pointer or reference to
  525. a base class to a derived class.  This should usually be checked with an
  526. embedded dynamic typing scheme if such a scheme is not present in the
  527. language, such as with a typecase (Modula-3) or inspect (Simula) construct.
  528. In C++, it is even possible to use conversion functions to perform some
  529. checks, although the proposed RTTI will perform checked downcasting as
  530. its primary ability.
  531.  
  532.  
  533. 4.2)  What are Virtual Functions?
  534. ---------------------------------
  535.  
  536. Look under "Dynamic Binding" and "Polymorphism".
  537.  
  538.  
  539. 4.3)  Can I Use Multiple-Polymorphism Or Multi-Methods In C++?
  540. ---------------------------------------------------------------
  541.  
  542. Yes, but you'll need to embed a dynamic typing scheme to do it.  With dynamic
  543. types in place, an overriding method in a derived class can explicitly check
  544. argument types in a switch statement and invoke the desired method emulating
  545. multiple-polymorphism [See Coplien 92].  
  546.  
  547. For true CLOS multi-methods, the above technique implemented as a base function
  548. (CLOS defgeneric), switching to specialized functions (CLOS methods, made
  549. friends of all arguments) will provide the functional calling syntax, multiple-
  550. polymorphism and access to parameters found in CLOS.  This can require some
  551. complex switching, which is somewhat mitigated when multiple-polymorphism
  552. is implemented with virtual functions.
  553.  
  554. Future FAQs should contain more detail.
  555.  
  556.  
  557. 4.4)  Can I Use Dynamic Inheritance In C++?
  558. -------------------------------------------
  559.  
  560. Yes, [Coplien 92] describes a scheme where a class can contain a pointer to
  561. a base class that can switch between its derived classes, providing a limited
  562. form.  Earlier chapters contain entries on bypassing C++'s message system and
  563. even bypassing static linking.
  564.  
  565. Future FAQs should contain more detail.
  566.  
  567.  
  568.  
  569. ANNOTATED BIBLIOGRAPHY
  570. ======================
  571.  
  572. [Agrawal 91]  R. Agrawal et al.  "Static Type Checking of Multi-Methods".
  573.  OOPSLA 91.  Object-Oriented Programming Systems, Languages, and Applications.  
  574.  ACM Press.  Addison Wesley.
  575.  
  576.   Compile-time checking and optimizations for multi-methods.
  577.  
  578. [Aho 86] Alfred V. Aho, Ravi Sethi, and Jeffrey D. Ullman.  Compilers:
  579.  Principles, Techniques, and Tools. Reading, MA: Addison-Wesley, 1986.
  580.  
  581.   Authoritative, classic book on compilers and optimizations.  Type chapter
  582.   contains section on type inferencing (using ML as an example).
  583.  
  584. [Berard 93]  Edward V. Berard.  Essays on Object-Oriented Software
  585.   Engineering.  Prentice Hall.
  586.  
  587.   Many topics on OOSE, includes coverage of OO domain and requirements
  588.   analysis.
  589.  
  590. [Black 86] A. Black et al.  Object-Structure in the Emerald System.  OOPSLA
  591.  '86 Conference Proceedings, SIGPLAN Notices (Special Issue), Vol. 21, n0. 11,
  592.  pp 78-86.    [I believe there is a more recent article, YTBI]
  593.  
  594.   The original article on Emerald.  OO language without inheritance but with
  595.   abstract types and static subtype polymorphism.  Also designed for
  596.   distributed programming and reuse.  See article for references: Jade on
  597.   reuse [Raj 89]) and Distr. Prog.
  598.  
  599. [Black 87] A. Black, N. Hutchinson, E. Jul, H. Levyand L. Carter.  Distribution
  600.  and Abstract Types in Emerald, IEEE Transactions on Software Engineering, Vol.
  601.  SE13, no. 1 Jam., pp 65-76.
  602.  
  603.   Subtype polymorphism for distributed programming in Emerald [Black 86].
  604.  
  605. [Blair 89] "Genericity vs Inheritance vs Delegation vs Conformance vs ..."
  606.  Gordon Blair, John Gallagher and Javad Malik, Journal of Object Oriented
  607.  Programming, Sept/Oct 1989, pp11-17.
  608.  
  609.   Recommended by a reader, but the Author has yet to review this article.
  610.  
  611. [Boehm 86] B.W. Boehm. A Spiral Model of Software Development and Enhancement.
  612.  Software Engineering Notes, Aug., vol. 11 (4), p 22.
  613.  
  614.  Presents an alternative evolutionary approach to the strict waterfall software
  615.  engineering life-cycle.  Now a classic, most OO methodologies now emphasize
  616.  the iterative or evolutionary approach to software development.
  617.  
  618. [Booch 87] Grady Booch.  Software Engineering with Ada.  2nd Ed.  Benjamin
  619.  Cummings.
  620.  
  621.   Booch in his early years.  Mostly object-based programming with Ada.
  622.  
  623. [Booch 87b] Grady Booch.  Software Components With Ada, Structures, Tools,
  624.  and Subsystems.  Benjamin Cummings.
  625.  
  626.   A taxonomy and collection of object-based components in Ada (includes code).
  627.   Has many examples with generics.
  628.  
  629. [Booch 91] Booch, Grady. Object-Oriented Design With Applications.  Benjamin
  630.   Cummings.
  631.  
  632.   The often referred to book on OOD.  Offers design notation and methodology.
  633.   Brief coverage of OOA and elaborate OOD/P coverage in the applications.
  634.   Good on basic principles and has case studies in Smalltalk, Object Pascal, 
  635.   C++, CLOS and Ada.
  636.  
  637.   Also contains an *elaborate* classified bibliography on many areas of OO.
  638.  
  639. [Booch 94]  Grady Booch.  Object-Oriented Analysis And Design With
  640.  Applications, 2nd Ed. Benjamin Cummings.  ISBN 0-8053-5340-2.
  641.  
  642.   The next FAQ should be updated to the second edition.  All examples are now
  643.   in C++.  Booch incorporates several other major methodologies including
  644.   Wirf-Brock's CRC (Class-Responsibility-Collaboration) and Jacobson's Use-
  645.   Cases.
  646.  
  647. [Cardelli 85]  L. Cardelli and P. Wegner.  On Understanding Types, Data
  648.  Abstraction, and Polymorphism.  ACM Computing Surveys vol. 17 (4).
  649.  
  650.  Long, classic article on Object-Oriented Types, Data Abstraction and
  651.  Polymorphism.  Formal coverage with a type system analysis model as well.
  652.  
  653. [Chambers 92]  Craig Chambers.  The Design and Implementation of the SELF
  654.  Compiler, an Optimizing Compiler for Object-Oriented Programming Languages.
  655.  Dept of Computer Science, Stanford University, March 1992.
  656.  
  657.   Covers type optimizations for OO compilers.  See Appendix E, PAPERS.
  658.  
  659. [Chambers 93]  Craig Chambers.  Predicate Classes.  Proceedings ECOOP '93
  660.   O. Nierstrasz, LNCS 707. Springer-Verlag, Kaiserslautern, Germany
  661.   July 1993 pp 268-296
  662.  
  663.    "... an object is automatically an instance of a predicate class whenever
  664.    it satisfies a predicate expression associated with the predicate class.
  665.    The predicate expression can test the value or state of the object, thus
  666.    supporting a form of implicit property-based classification that augments
  667.    the explicit type-based classification provided by normal classes.  By
  668.    associating methods with predicate classes, method lookup can depend not
  669.    only on the dynamic class of an argument but also on its dynamic value or
  670.    state. [...] A version of predicate classes has been designed and
  671.    implemented in the context of the Cecil language.
  672.  
  673.   See Appendix E, PAPERS.
  674.  
  675. [de Champeaux 93] Dennis de Champeaux, Doug Lea, Penelope Faure.
  676.  Object-Oriented System Development.  Addison-Wesley, ISBN 0-201-56355-X.
  677.  
  678.   Covers an integrated treatment of OOA and OOD.  Takes serious the
  679.   computational model of one thread per object.  Gives more than usual
  680.   attention to the OOA&D micro process.  Presents a unique OOD language.
  681.  
  682. [Coad 91]  Peter Coad and Edward Yourdon. Object-Oriented Analysis, 2nd ed.
  683.  Englewood Cliffs, NJ. Prentice Hall.
  684.  
  685.   Coad and Yourdon's OO analysis method.
  686.  
  687. [Coad 91b]  Peter Coad and Edward Yourdon. Object-Oriented Design.  Englewood
  688.  Cliffs, NJ. Prentice Hall.
  689.  
  690.   Coad and Yourdon's OO design method.
  691.  
  692. [Coleman 94] Derek Coleman, et. al.  Object-Oriented Development - The Fusion
  693.  Method.  Prentice-Hall Object-Oriented Series. ISBN 0-13-338823-9
  694.  
  695.   Fusion is considered to be a second generation OOAD method in that it builds
  696.   on successful components of a number of first generation methods (OMT, Booch,
  697.   CRC, Objectory, etc).  However, this has been done with the requirements of
  698.   industrial software developers in mind. And so issues of traceability,
  699.   management etc. have been taken into consideration and the Method provides
  700.   full coverage from requirements through to code.
  701.  
  702. [Coplien 92] James O. Coplien.  Advanced C++ Programming Styles and Idioms.
  703.   Addison Wesley.
  704.  
  705.   Covers advanced C++ programming and performing other more advanced and
  706.   dynamic styles of OO in C++.
  707.  
  708. [Colbert 89]  E. Colbert.  The Object-Oriented Software Development Method: a
  709.  practical aproach to object-oriented development.  Tri-Ada Proc., New York.
  710.  
  711.   Presents the Object-Oriented Software development method.  Has emphasis on
  712.   objects.
  713.  
  714. [Cox 86,91] Cox, Brad J.  Object-Oriented Programming, An Evolutionary
  715.  Approach.  Addison Wesley.
  716.  
  717.   The original book on Objective-C.  Coverage on object-oriented design and
  718.   programming.  Also covers Objective-C implementation, even into object code.
  719.   
  720.   Objective-C... '91 AW by Pinson and Wiener provide another good text.
  721.  
  722. [Embley 92]  D.W. Embley, B.D. Kurtz, S.N. Woodfield.  Object-Oriented Systems
  723.  Analysis, A Model-Driven Approach. Yourdon Press/Prentice Hall, Englewood
  724.  Cliffs, NJ.
  725.  
  726.   Presents the Embley and Kurtz OO methodology.
  727.  
  728. [Garfinkel 93]  Simson L. Garfinkel and Michael K. Mahoney.  NeXTSTEP
  729.  PROGRAMMING  STEP ONE: Object-Oriented Applications.  Springer-Verlag.
  730.  
  731.   Introduction to the NextStep environment and applications development.
  732.  
  733. [Goldberg 83] Adele Goldberg and David Robson. Smalltalk-80 The Language and
  734.  Its Implementation.  Addison Wesley.
  735.  
  736.   The original book on Smalltalk.  Covers implementation.  Also known as "the
  737.   Blue Book".  Out of print.  Superceded by [Goldberg ??].
  738.  
  739. [Goldberg ??] Adele Goldberg and David Robson. Smalltalk-80: The Language.
  740.  Addison-Wesley. 
  741.  
  742.   The "Purple Book".  Omits the obsolete abstract virtual machine description
  743.   from the Blue Book.
  744.  
  745. [Harmon 93] Paul Harmon.  Objects In Action: Commercial Applications Of Object-
  746.  Oriented Technologies.  Jan, 1993.  A-W ISBN 0-201-63336-1.
  747.  
  748.   Sponsored by the OMG to summarize the use of OO technology in industry and
  749.   business, contains a brief history and summary of OO and many case studies.
  750.  
  751. [HOOD 89] HOOD Working Group.  HOOD Reference Manual Issue 3.0.  WME/89-173/JB.
  752.  Hood User Manual Issue 3.0. WME/89-353/JB.  European Space Agency.
  753.  
  754.   Presnets the HOOD (Hierarchical Object-Oriented Design) OOSE methodology.
  755.   From the European Space Agency.  Based on Ada and object-based.
  756.  
  757. [Hudak 92] Paul Hudak and Simon Peyton Jones.  Haskell Report. SIGPLAN Notices.
  758.  1992, vol 27, no 5.
  759.  
  760.   Haskell reference.
  761.  
  762. [Humphrey 89]  Watts Humphrey.  Managing the Software Process.  Addison Wesley.
  763.  
  764.   Sponsored by the Software Engineering Institute (SEI), the presented project
  765.   management model is inspired by the work of Boehm, Brooks, Demming and Juran
  766.   and represents a strong step in the direction of achieving 6 sigma defect
  767.   rate prevention and optimizing the software development process for quality,
  768.   productivity, and reliability.
  769.  
  770. [IBM 90,91]  Various Documents from the IBM International Technical Centers:
  771.  GG24-3647-00, GG24-3641-00, GG24-3566-00, GG24-3580-00.
  772.  
  773.   Present IBM's OOSE methodology.
  774.  
  775. [Jacobson 92]  Ivar Jacobson, et al.  Object-Oriented Software Engineering - A
  776.  Use Case Driven Approach. ACM Press/Addison Wesley.
  777.  
  778.   Presents Jacobson's new OOSE methodology based on use cases.
  779.  
  780. [Jones 92]  Rick Jones. Extended type checking in Eiffel. Journal of Object-
  781.  Oriented Programming, May 1992 issue, pp.59-62.
  782.  
  783.   Presents subtype polymorphic extension to Eiffel (static typing only).
  784.  
  785. [Jurik 92] John A. Jurik, Roger S. Schemenaur, "Experiences in Object Oriented
  786.  Development," ACM 0-89791-529-1/92/0011-0189.
  787.  
  788.   Presents the EVB OOSE methodology.  Also: Barbara McAllister, Business
  789.   Development, EVB Software Engineering, Inc., (301)695-6960, barb@evb.com.
  790.  
  791. [Kiczales 92] Gregor Kiczales, Jim des Rivieres, Daniel G. Bobrow.  The Art
  792.  of the Metaobject Protocol.  The MIT Press.
  793.  
  794.   Reflection and Metaobject Protocols (MOPs).  Uses a CLOS subset, clossette,
  795.   as a foundation.
  796.  
  797. [Kim 89]  Won Kim and Frederick Lochovsky Editors.  Object-Oriented Concepts,
  798.  Applications, and Databases.
  799.  
  800.   Collection of articles on advanced OO and research systems.
  801.  
  802. [Lakoff 87] George Lakoff.  Women, Fire, and Dangerous Things: What Categories
  803.   Reveal About The Mind.  UOC Press.
  804.  
  805.   An almost formal view of classification/categorization by the noted cognitive
  806.   scientist, George Lakoff.  His view blasts objectivism and contends to
  807.   replace it with a subjectivist view, based on a study of humans, natural
  808.   language, and concept formation.
  809.  
  810. [LaLonde 90]  Wilf R. LaLonde and John R. Pugh.  Inside Smalltalk: Volume 1.
  811.  Prentice Hall.
  812.  
  813.   Good introduction to Smalltalk.
  814.  
  815. [LaLonde 90b]  Wilf R. LaLonde and John R. Pugh.  Inside Smalltalk: Volume 2.
  816.  Prentice Hall.
  817.  
  818.   Excellent coverage of MVC. However, it's based on ParcPlace Smalltalk-80,
  819.   version 2.5, which is obsolete.
  820.  
  821. [Liskov 93] Barbara Liskov and Jeannette M. Wing.  Specifications and Their use
  822.  in Defining Subtypes.  OOPSLA 93, pp 16-28.  ASM SIGPLAN Notices, V 28, No 10,
  823.  Oct. 1993.  A-W ISBN 0-201-58895-1.
  824.  
  825.   Specifications on Subtype hierarchies.  Helps to insure the semantic
  826.   integrity of a separate subtype system.  See section 2.7.
  827.  
  828. [Madsen 93] Ole Lehrmann  Madsen, Birger Moller-Pedersen, Kristen Nygaard:
  829.  Object-oriented programming in the BETA programming language.  Addison-Wesley,
  830.  June 1993. ISBN 0 201 62430 3
  831.  
  832.   The new and authoritative book on Beta, by the original designers.  They
  833.   are some of the same designers of the Simula languages, originating OO.
  834.   Also just announced:
  835.     Object-Oriented Environments: The Mjolner Approach
  836.     Editors: Jorgen Lindskov Knudsen, Mats Lofgren, Ole Lehrmann Madsen,
  837.          Boris Magnusson
  838.     Prentice Hall: The Object-Oriented Series
  839.     ISBN: 0-13-009291-6 (hbk)
  840.  
  841. [Martin 92] James Martin and James J. Odell. Object-Oriented Analysis and
  842.  Design, Prentice-Hall, Englewood Cliffs, NJ.  
  843.  
  844.   Its primary purpose is to indicate how information engineering (IE) can be 
  845.   evolved to accommodate OO.  The analysis portion (starting at Chapter 15) 
  846.   attempts to go back to 'first principles' and is based on a formal foundation.
  847.   Therefore, the IE aspect is not required.  Emphasis is more on analysis than 
  848.   design.
  849.  
  850. [Meyer 88] Bertrand Meyer. Object-Oriented Software Construction.  Prentice
  851.  Hall.  [Is there a new edition out?]
  852.  
  853.   The original book on Eiffel.  Coverage on object-oriented design and
  854.   programming.  Also:
  855.   Bertrand Meyer. Eiffel: The Language. PH. Englewood Cliffs, NJ. 1991(?)
  856.  
  857. [Mugridge 91] Warwick B. Mugridge et al.  Multi-Methods in a Statically-Typed
  858.  Programming Language. Proc. ECOOP.
  859.  
  860.   Efficient implementation of Multi-Methods.
  861.  
  862. [Murray 93] Robert B. Murray.  C++ Strategies and Tactics.  Addison Wesley.
  863.  
  864.   C++, has template examples.
  865.  
  866. [Nerson 92] Jean-Marc Nerson.  Applying Object-Oriented Analysis and Design.
  867.  CACM, 9/92.
  868.  
  869.   Demonstrates the basics of the BON method/notation.  Nerson: marc@eiffel.fr
  870.  
  871. [Raj 89] R.K. Raj and H.M. Levy.  A Compositional Model for Software Reuse.
  872.  The Computer Journal, Vol 32, No. 4, 1989. 
  873.  
  874.   A novel approach aading reuse to Emerald [Black 86] without inheritance.
  875.  
  876. [Reenskaug 91] T. Reenskaug, et al.  OORASS: seamless support for the creation
  877.  and maintenance of object-oriented systems. Journal of Object-Oriented
  878.  Programming, 5(6).
  879.  
  880.   Presents the Object-Oriented Role Analysis, synthesis, and Structuring
  881.   OOSE methodology.
  882.  
  883. [Royce 70] W. W. Royce. Managing the Development of Large Software Systems.
  884.  Proceedings of IEEE WESCON, August 1970.
  885.  
  886.  Introduces the Waterfall Process Model.
  887.  
  888. [Rumbaugh 91] Rumbaugh James, et al.  Object-Oriented Modeling and Design.
  889.  Prentice Hall.
  890.  
  891.   The often referred to book on OOA/OOD.  Introduces the Object Modeling
  892.   Technique (OMT) OOA/D notation and methodology.  Has case studies.
  893.  
  894. [Sciore 89] Edward Sciore.  Object Specialization. ACM Transactions on
  895.  Information Systems, Vol. 7, No. 2, April 1989, p 103.
  896.  
  897.   A hybrid approach between delegation and classical OO.
  898.  
  899. [Shlaer 88] Sally Shlaer and Stephen J. Mellor.  Object-Oriented Systems
  900.  Analysis: Modeling the World in Data.
  901.  
  902.   Credited as the first book proposing an OOA method.
  903.  
  904. [Shlaer 92] Sally Shlaer and Stephen J. Mellor.  Object Lifecycles: Modeling
  905.   the World in States.
  906.  
  907.   An addition to [Shlaer 88], provides dynamic modeling with a state-
  908.   transition driven approach.
  909.  
  910. [Strachey 67]  C. Strachey.  Fundamental Concepts in programming languages.
  911.  Lecture Notes for International Summer School in Computer Programming,
  912.  Copenhagen, Aug.
  913.  
  914.   Contains original, classical definition of polymorphism.
  915.  
  916. [Stroustrup 90] Ellis, M.A., Stroustrup. The Annotated C++ Reference Manual.
  917.  Addison Wesley.
  918.  
  919.   The ARM; the original and definitive book on C++.  Serves as the ANSI
  920.   base document for C++.  Also covers C++ implementation.  It is meant as 
  921.   a reference (including for compiler writers), not as a tutorial for
  922.   beginners.  Perhaps a better ref is [Stroustrup 91].
  923.  
  924. [Stroustrup 91] Stroustrup, B.  The C++ Programming Language (2nd edition).
  925.  
  926.   Has the ARM, better reference for the use of C++ (recommended by bs).
  927.   Contains sections on object-oriented software engineering.
  928.  
  929. [Tasker 93]  Dan Tasker.  The Problem Space, Practical Techniques for
  930.   Gathering & Specifying Requirements. ISBN: 0-646-12524-9.  Avail only from
  931.   author, dant@swdev.research.otc.com.au.
  932.  
  933.   Object-oriented requirements definition.  Hypertext.  Uses Rumbaugh's OMT as
  934.   a base.  See also APPENDIX D.
  935.  
  936. [Ungar 87] D. Ungar and R.B. Smith.  The Self Papers. [Entry To Be Completed]
  937.  
  938.   The documents on Self; a delegation/prototyping language.  Also covers Self
  939.   implementation and optimization.  See also APPENDIX E, PAPERS section.
  940.  
  941. [Wasserman 90] A.I. Wasserman et al. The Object-Oriented Software Design
  942.  Notation for Software Design Representation. IEEE Computer, 23(3).
  943.  
  944.   Presents the Object-Oriented Structured Design (OOSD) OOSE methodology.
  945.   Traditional structured techniques to OO, hybrid containing structured
  946.   design and Booch.
  947.  
  948. [Wegner 87] Peter Wegner. "Dimensions of Object-Based Language Design",
  949.   Proceedings of OOPSLA '87, October 4-8 1987, SIGPLAN Notices
  950.   (Special Issue), V22, No 12, pp168-182, 1987.
  951.  
  952. [Wikstrom 87] Ake Wikstrom.  Functional Programming Using Standard ML.
  953.  Prentice Hall, ISBN 0-13-331661-0, 1987.
  954.  
  955.   ML reference.
  956.  
  957. [Wilkie 93] George Wilkie. Object-Oriented Software Engineering - The
  958.  Professional Developer's Guide. Addison Wesley.
  959.  
  960.   Covers OOSE, 11 popular analysis and design methodologies with examples,
  961.   comparisons, and analysis, information systems (OODB), and case studies.
  962.  
  963. [Winter Partners]  Winter Partners 
  964.  
  965.   A proprietary toolset (OSMOSYS) for OOA and OOD.
  966.   Winter Partners
  967.     London Office:                 Zurich Office:
  968.       West Wing, The Hop Exchange
  969.       24a Southwark Street           Florastrasse 44
  970.       London SE1 1TY                 CH-8008 Zurich
  971.       England                        Switzerland
  972.       Tel. +44-(0)71-357-7292        Tel. +41-(0)1-386-95 11
  973.       Fax. +44-(0)71-357-6650        Fax. +41-(0)1-386-95 00
  974.  
  975. [Wirfs-Brock 90] Rebecca Wirfs-Brock, Brian Wilkerson, Lauren Wiener.
  976.  Designing Object Oriented Software, Englewood Cliffs, NJ. Prentice Hall.
  977.  
  978.   Presents a "Responsibility Driven Design" (RDD) with "Class, Responsibility,
  979.   Collaboration" (CRC) technique, a modern and new OOA/OOD methodology.
  980.  
  981. [Yaoqing 93]  Gao Yaoqing and Yuen Chung Kwong.  A Survey of Implementations
  982.  of Parallel, Concurrent, and Distributed Smalltalk.  ACM SIGPLAN Notices.
  983.  Vol 28, No. 9, Sept 93.
  984.  
  985.   Covers implementations of Parallel, Concurrent, and Distributed Smalltalk.
  986.  
  987. [Yourdon 92]  Edward Yourdon.  Decline and Fall of the American Programmer.
  988.  YPCS.
  989.  
  990.   Excellent coverage of modern software engineering practice and world-class
  991.   software development organizations.
  992.  
  993.  
  994.  
  995. APPENDICES
  996. ==========
  997.  
  998.  
  999. APPENDIX A  VIPS
  1000. ================
  1001.  
  1002. These are individuals whose names appear in comp.object most often. 
  1003. Please send recommendations for *major* VIPS often cited or referenced.
  1004.  
  1005. Booch, Grady <egb@rational.com>
  1006. -------------------------------
  1007.  
  1008. Grady Booch has been an object-oriented Ada advocate for some time.  He's
  1009. written books such as Software Engineering with Ada, Software Components
  1010. with Ada, and OOD with Applications.  The first two are Object-Based and
  1011. the second is primarily Object-Oriented and all use OB and OO notations and
  1012. methodologies.  His last notations are often referred to as simply the
  1013. "Booch" method or notation and his company, Rational, provides automated
  1014. support with a tool named "Rose".  See also APPENDIX D.
  1015.  
  1016.  
  1017. Cox, Brad
  1018. ---------
  1019.  
  1020. Founder of Objective-C, which grafts the Smalltalk facilities of an
  1021. Object id and a messaging mechanism onto C.  Author of [Cox 87].
  1022.  
  1023.  
  1024. Goldberg, Adele  (Alan Kay, Dan Ingalls)
  1025. ----------------------------------------
  1026.  
  1027. One of the founders of Smalltalk (with Alan Kay and Dan Ingalls).  Coauthor
  1028. of [Goldberg 83, ??], "Smalltalk-80 The Language and its Implementation".
  1029. Smalltalk was invented by a group at Xerox PARC; and a spinoff, ParcPlace, is
  1030. now marketing Smalltalk environments (see APPENDIX C).
  1031.  
  1032.  
  1033. Meyer, Bertrand <bertrand@eiffel.com>
  1034. -------------------------------------
  1035.  
  1036. Founder of Eiffel, author of [Meyer 88].  Often posts to comp.lang.eiffel
  1037. and comp.object [what a FAQ writer notices].  His company, Interactive
  1038. Software Engineering, has a case tool called EiffelCase (see APPENDIX D).
  1039.  
  1040.  
  1041. Nygaard, Krysten (and Dahl, Ole-Johan)
  1042. --------------------------------------
  1043.  
  1044. Inventor of Simula, the first object-oriented programming language.  Also
  1045. inventor of object oriented design, for which Simula-67 was considered an
  1046. implementation technique.  Now B.B. Kristensen, O.L. Madsen, B. Moller-
  1047. Pedersen, and K. Nygaard are working on Beta, their successor to Simula.
  1048.  
  1049.  
  1050. Rumbaugh, James
  1051. ---------------
  1052.  
  1053. Part of Rumbaugh, Blaha, Premerlani, Eddy and Lorenson, the authors of
  1054. [Rumbaugh 91].  They all work for GE Corporate Research and Development Center
  1055. in Schenectady New York and have an OOA/OOD notation/methodology called the
  1056. "Object Modeling Technique".  It is a rather formal and complete method often
  1057. discussed in comp.object.  OMTool is the name of the CASE system provided by
  1058. GE which supports OMT.  See APPENDIX D.
  1059.  
  1060.  
  1061. Shlaer, Sally (and Mellor, Stephen J.)
  1062. --------------------------------------
  1063.  
  1064. >Sally Shlaer            sally@projtech.com
  1065. >Project Technology      Training and Consulting using Shlaer-Mellor OOA/RD
  1066. >Berkeley, CA            (510) 845 1484
  1067.  
  1068. Cofounder of the Shlaer/Mellor OOA/RD method, president of Project Technology.
  1069. As shown above, occasionally posts to comp.object [what a FAQ writer notices].
  1070.  
  1071.  
  1072. Stroustrup, Bjarne (bs@alice.att.com)
  1073. -------------------------------------
  1074.  
  1075. Inventor of C++, a C superset, which has probably gained the most widespread
  1076. use of any object-oriented language today.  Often found in comp.lang.c++ and
  1077. comp.object.
  1078.  
  1079.  
  1080.  
  1081. APPENDIX B  OBJECT-ORIENTED DATABASES AND VENDORS
  1082. =================================================
  1083.  
  1084. This is a list of available Object-Oriented databases.  Thanks go to Stewart
  1085. Clamen, who's survey on schema evolution provided a good start.  Additional
  1086. short entries are encouraged; please send additions to the author of the FAQ
  1087. (and/or to Stewart).
  1088.  
  1089. The most recent copy of Stewart Clamen's summary on available databases
  1090. support for schema evolution will be available indefinitely via anonymous
  1091. FTP from BYRON.SP.CS.CMU.EDU:/usr/anon/OODBMS/evolution-summary.
  1092.  
  1093. [Kim 89] covers a few of the research systems below in depth.
  1094.  
  1095. Starred entries also have an entry in "APPENDIX E  ANONYMOUS FTP SITES".
  1096.  
  1097.  
  1098. TABLE OF CONTENTS
  1099.  
  1100. Extended Relational Database Model
  1101.  Research Systems
  1102.   POSTGRES*     [marketed by Montage]
  1103.   Starburst     [IBM almaden, entry NYI]
  1104.  Commercial Systems
  1105.   Montage       [Research System POSTGRES]
  1106.  
  1107. Object-Oriented Data Model
  1108.  Research Systems
  1109.   AVANCE
  1110.   CLOSQL
  1111.   ConceptBase*
  1112.   COOL/COCOON
  1113.   Encore*
  1114.   Exodus*
  1115.   Machiavelli
  1116.   MOOD4-PC*
  1117.   OBST/STONE*
  1118.   Ode*
  1119.   Oggetto
  1120.   Orion [marketed as ITASCA, see Entry]
  1121.   OTGen
  1122.   VODAK
  1123.  Commercial Systems
  1124.   ArtBASE
  1125.   EasyDB (Objective Systems, Sweden)
  1126.   GemStone/GeODE
  1127.   ITASCA
  1128.   Matisse
  1129.   NeoAccess
  1130.   O2
  1131.   Objectivity/DB
  1132.   ObjectStore
  1133.   Ontos [formerly VBase]
  1134.   OpenODB (HP)
  1135.   Poet
  1136.   Statice
  1137.   UniSQL
  1138.   Versant
  1139.  
  1140. Other Models
  1141.  Research Systems  
  1142.   GRAS*
  1143.   IRIS
  1144.  Commercial Systems  
  1145.   IDL
  1146.   Kala
  1147.   Pick
  1148.  
  1149. Interfaces
  1150.  Research Systems
  1151.   Penguin
  1152.  Commercial Systems
  1153.   Persistence
  1154.   Subtlware
  1155.  
  1156.  
  1157. EXTENDED RELATIONAL DB MODEL
  1158. ----------------------------
  1159.  
  1160. Research Systems
  1161. ________________
  1162.  
  1163.  
  1164. > POSTGRES (Berkeley)
  1165.  
  1166. POSTGRES is an extended-relational database manager that supports
  1167. inheritance, user-defined types, functions, and operators, ad-hoc
  1168. queries, time travel, a rules system, tertiary storage devices,
  1169. and very large typed objects, among other things.  POSTGRES speaks
  1170. postquel, a derivative of the quel query language originally
  1171. designed at berkeley for the ingres database system.  User functions
  1172. may be written in C or in postquel.  C functions will be dynamically
  1173. loaded into the database server on demand, and either kind of function
  1174. may be executed from the query language.
  1175.  
  1176. POSTGRES and the papers that describe it are available free of charge
  1177. from toe.CS.Berkeley.EDU (128.32.149.117) in directory pub/postgres.
  1178. The code is stored in a directory named after the latest release; at
  1179. the time of this writing, that directory is postgres-v4r1.  The list
  1180. of officially-supported ports is short (decstations running ultrix 4.x
  1181. and sparcstations).  Unofficially, many more are supported -- people
  1182. elsewhere have done the ports and distribute their versions of the
  1183. code.  The list of unofficial ports is available in pub/postgres as
  1184. file UNOFFICIAL-PORT-LIST.
  1185.  
  1186. On Type Evolution:
  1187. You ask explicitly about type evolution.  We support schema
  1188. modification on all classes, including user classes.  This means that
  1189. you can add attributes (instance slots) and methods at any time.
  1190. Further, since postgres is a shared database system, such changes are
  1191. instantly visible to any other user of the class.
  1192.  
  1193. The language syntax supports attribute deletion, but the system won't
  1194. do it yet.  Since all data is persistent, removing attributes from a
  1195. class requires some work -- you need to either get rid of or ignore
  1196. all the values you've already stored.
  1197.  
  1198. Contact:
  1199. Paul Aoki <aoki@cs.berkeley.edu>
  1200.  
  1201. The postgres code from uc berkeley is being commercialized by
  1202. Miro Systems, Inc.        [This seems to have been updated to Montage]
  1203.  
  1204. Contact:
  1205.   paula hawthorn (paula@miro.com) 
  1206.   dave segleau (dave@miro.com)
  1207.  
  1208.  
  1209. Commercial Systems
  1210. ------------------
  1211.  
  1212. > Montage (ORDBMS) [Research System POSTGRES]
  1213.  
  1214. From: markh@montage.com (Mark Helfen)
  1215. Subject: Montage Database - brief product announcement
  1216. Followup-To: sales@montage.com 
  1217. Organization: Montage Software, Inc.
  1218. Date: Wed, 10 Nov 1993 23:05:03 GMT
  1219.  
  1220. The Montage object-relational database management system 
  1221. (ORDBMS) is now available from Montage Software, Inc. 
  1222.  
  1223. The Montage object-relational database management system 
  1224. includes the Montage Server(tm) database engine, the Montage 
  1225. Viewer(tm) -- a new visualization tool that simplifies queries of 
  1226. complex data -- and Montage DataBlades(tm), specialized modules 
  1227. that extend the capabilities of the database for specific applications.  
  1228. Montage represents the commercialization of the seven-year 
  1229. POSTGRES research project.   
  1230.  
  1231. The Montage Server extends the relational database model through 
  1232. its ability to handle complex information, and the inclusion of object-
  1233. oriented facilities and capabilities.  It uses the familiar relational row-
  1234. column metaphor for all data, so that text, numbers and complex data 
  1235. are all viewed, managed, manipulated and queried the same way.   
  1236. The relational metaphor is extended to allow data of any size and 
  1237. complexity to be stored and accessed in the way that is most 
  1238. effective.   SQL, used to access and manage data, is extended with 
  1239. SQL3-based capabilities to allow the definition of user data types and 
  1240. functions.
  1241.  
  1242. The Montage Viewer uses visualization technology to organize 
  1243. information in visual terms -- by location, shape, color and intensity, 
  1244. for example.  Similar to a "flight simulator," the Montage Viewer allows 
  1245. the user to visually navigate through data, refining each step by 
  1246. "panning" and "zooming" with a mouse.  
  1247.  
  1248. A DataBlade is a combination of data types and functions that are 
  1249. designed to support a specific application.   Text, Spatial, and Image 
  1250. are the first of many DataBlades that will comprise a full-range of 
  1251. industry-specific products created by Montage, third parties and 
  1252. users based upon their own expertise.    
  1253.  
  1254. o     The Text DataBlade expands the database's functionality by 
  1255. adding new data types and functions that manage text and document 
  1256. libraries, as well as a providing a new access method (Doc-Tree) 
  1257. which provides exceptional search performance for text.  
  1258.  
  1259. o     The Image DataBlade supports image conversion, storage, 
  1260. manipulation, enhancement and management of more than 50 image 
  1261. formats, and performs automatic conversion of formats at the user's 
  1262. discretion.  
  1263.  
  1264. o     Points, lines, polygons and their spatial relationships are now 
  1265. supported in the relational model with the Spatial DataBlade.  The 
  1266. DataBlade defines nine basic spatial types and makes over 200 SQL 
  1267. functions available for use on spatial data, as well as supports the 
  1268. R-Tree access method for high speed navigation of spatial data.    
  1269.  
  1270. Montage Software was co-founded by Gary Morgenthaler of 
  1271. Morgenthaler Ventures and Dr. Michael Stonebraker of the University 
  1272. of California, Berkeley, .  Morgenthaler is Montage Software's 
  1273. chairman of the board and Stonebraker serves as the company's 
  1274. chief technology officer.    Morgenthaler and Stonebraker co-
  1275. founded Ingres Corporation (then called Relational Technology, 
  1276. Inc.), in 1980.    
  1277.  
  1278. FOR ADDITIONAL INFORMATION:
  1279.  
  1280. Montage Software Inc. can be contacted at:
  1281.  
  1282. email:                        sales@montage.com
  1283. phone:                        (510) 652-8000
  1284. fax:                          (510) 652-9688
  1285.  
  1286. Mailing Address:
  1287.  
  1288. Montage Software, Inc.
  1289. 2000 Powell Street, Suite 1405
  1290. Emeryville, CA  94608
  1291.  
  1292. OO DATA MODEL
  1293. -------------
  1294.  
  1295. Research Systems
  1296. ________________
  1297.  
  1298. > AVANCE (SYSLAB)
  1299.  
  1300. An object-oriented, distributed database programming language.  Its
  1301. most interesting feature is the presence of system-level version
  1302. control, which is used to support schema evolution, system-level
  1303. versioning (as a way of improving concurrency), and objects with their
  1304. own notion of history.  System consists of programming language (PAL)
  1305. and distributed persistent object manager. 
  1306.  
  1307. REFERENCES: 
  1308.         Anders Bjornerstedt and Stefan Britts. "AVANCE: An
  1309.         Object Management System".  Proceedings of OOPSLA88.
  1310.  
  1311.  
  1312.  
  1313. > CLOSQL (University of Lancaster)
  1314.  
  1315. Status:-
  1316. CLOSQL is a research prototype OODB designed primarily for prototyping 
  1317. various schema evolution and view mechanisms based on class versioning.
  1318. The system is built using CommonLISP. It would really only be of interest
  1319. to other parties as a research tool.
  1320.  
  1321. Requirements:-
  1322. Common LISP including CLOS standard. The Graphical user interface requires
  1323. the Harlequin LispWorks Tool-kit. The system was built on a Sun4 and
  1324. has not been tested on any other platform.
  1325.  
  1326. Features:-
  1327. As a prototype, CLOSQL is not robust enough to sell. The system is single
  1328. user and does not properly support persistence - that is, the data has to
  1329. be loaded and saved explicitly. The query language is quite good 
  1330. making good use of the functional nature of the environment. 
  1331. Methods (LISP and query language only), class versioning and
  1332. multiple inheritance are all supported in the data model. Type checking
  1333. information is held in the database, but is NOT enforced at present. The
  1334. GUI is notable for its support for schema evolution, but otherwise rather
  1335. ordinary.
  1336.  
  1337. Availability:-
  1338. Probably freely available, but as the project was part funded by an
  1339. industrial partner, some consultation with them would be necessary before
  1340. the system could be released.
  1341.  
  1342. References:-
  1343. [1]  Monk, S. R. and I. Sommerville, "A Model for Versioning of Classes 
  1344. in Object-Oriented Databases", Proceedings of BNCOD 10, Aberdeen. 
  1345. pp.42-58. 1992.
  1346.  
  1347. [2]  Monk, S. "The CLOSQL Query Language". Technical report No. SE-91-15. 
  1348. Computing Dept, Lancaster University, Lancaster, LA1 4YR, UK. 1991.
  1349.  
  1350. [3]  Monk, S., "A Model For Schema Evolution In Object-Oriented Database 
  1351. Systems", PhD thesis, Dept of Computing, Lancaster University, Lancaster
  1352. LA1 4YR, UK. 1992.
  1353.  
  1354. On Schema evolution (from original survey):
  1355. CLOSQL implements a class versioning scheme (like ENCORE), but employs a
  1356. conversion adaptation strategy.  Instances are converted when there is a
  1357. version conflict, but unlike ORION and GemStone, CLOSQL can convert instances
  1358. to older versions of the class if necessary.
  1359.  
  1360.         Aberdeen, Scotland. July, 1992.
  1361.  
  1362. Contacts;
  1363. Simon Monk:      srm@computing.lancaster.ac.uk
  1364. Ian Sommerville: is@computing.lancaster.ac.uk 
  1365.  
  1366.  
  1367. > ConceptBase
  1368.                                  Version 3.1
  1369.  
  1370. The ConceptBase System
  1371.  
  1372. ConceptBase is a deductive object management system intended for
  1373. conceptual modeling and the coordination of design environments.  It
  1374. integrates techniques from deductive and object-oriented databases in
  1375. the logical framework of the language Telos.
  1376.  
  1377. Key features are
  1378.  
  1379. *  hybrid representation with frame-like objects, semantic nets and
  1380.    logical specifications
  1381.  
  1382. *  extensibility by metaclass hierarchies
  1383.  
  1384. *  declarative object-centered query language
  1385.  
  1386. *  persistent object management with roll-back capability
  1387.  
  1388. ConceptBase follows a client-server architecture.  Client programs can
  1389. connect to the ConceptBase server and exchange data via interprocess
  1390. communication.  The ConceptBase programming interface allows the users
  1391. to create their own client programs in C or Prolog.
  1392.  
  1393. The X11-based ConceptBase usage environment offers an extensible
  1394. palette of graphical, tabular and textual tools for editing and
  1395. browsing the knowledge base.  It includes the CoAuthor tool which
  1396. supports multiple author production of hypermedia documents.
  1397.  
  1398. ConceptBase Applications
  1399.  
  1400. ConceptBase has been developed with partial support from the ESPRIT
  1401. projects DAIDA and Compulog.  It serves as a central knowledge manager
  1402. in the DAIDA environment for data-intensive information systems.
  1403. Further applications range from configuration management, co-authoring
  1404. to requirements engineering, reverse engineering, business modeling,
  1405. and quality assurance systems.  ConceptBase is used by several research
  1406. institutions in Europe and North America for experimental purposes.
  1407.  
  1408. Availability
  1409.  
  1410. ConceptBase is available for research purposes in a Prolog version
  1411. (running under ProLog by BIM 3.1) or as a runtime system.  The
  1412. graphical usage environment of ConceptBase is based on the Andrew
  1413. toolkit release 5.1.
  1414.  
  1415. Version 3.2 (only available as runtime system) will be released in 
  1416. August 1993.
  1417.  
  1418. A four week test-version of ConceptBase V3.1 is available 
  1419. on the FTP server ftp.informatik.rwth-aachen.de in the 
  1420. directory pub/CB.  For running the ftp version you must ask for a 
  1421. key by email.
  1422.  
  1423.  
  1424. Technical Requirements
  1425.  
  1426. Machine:  SUN4/Sparc
  1427. Main memory:    at least 8 MB
  1428. Free swap space:        at least 30 MB
  1429. Free space on disk:     at least 18 MB
  1430. Operating System:       SUN OS 4.1.1
  1431. Environment:            X11 Release 5
  1432.  
  1433. Contact
  1434.  
  1435. Rene Soiron
  1436. RWTH Aachen --- Informatik V
  1437. Ahornstr. 55, D-52056 Aachen
  1438. Tel/Fax: +49 +241 80 21 501 / 80 21 529
  1439. email: CB@picasso.informatik.rwth-aachen.de
  1440.  
  1441.  
  1442. Also:
  1443. We have developed a deductive object-oriented database called
  1444. ConceptBase where everything (tokens, classes, meta-classes
  1445. ,meta-meta-classes ,attributes, instantiations, specializations) is
  1446. treated as an object. That means that you may update the "schema"
  1447. (classes) at any time just as any other ordinary object.
  1448.  
  1449. The systems has (user-defined and builtin) integrity constraints that
  1450. prevent inconsistency (e.g. violation of ref.integrity).  Integrity
  1451. constraints in ConceptBase are (as in most other systems) static,
  1452. i.e., they are conditions that each database "state" must satisfy.
  1453.  
  1454. The data model we use does not distinguish schema level information
  1455. (i.e. classes) from instance level information. If you change for
  1456. example some classes and this change violates some integrity
  1457. constraints, e.g.  some instances now don't have the right attribute
  1458. types anymore, then you have the choice either to reject the update or
  1459. to change the existing DB. Currently, ConceptBase simply rejects such
  1460. updates.  We are thinking of exploiting abduction (see VLDB'90 article
  1461. of Kakas&Mancarella) to make more clever reactions in the sense of
  1462. "reformatting" instances.
  1463.  
  1464. [Manfred Jeusfeld <jeusfeld@forwiss.uni-passau.de>]
  1465.  
  1466.  
  1467. > COOL/COCOON (Ulm Universitaet)
  1468.  
  1469. The COCOON project was intended to extend the concepts and the
  1470. architecture of relational database management systems (DBMSs) beyond
  1471. nested relational to object-oriented ones. Based upon the nested
  1472. relational DBMS kernel DASDBS, we have built a prototype implementation
  1473. of the COCOON model. Key characteristics of COCOON are: generic,
  1474. set-oriented query and update operators similar to relational algebra
  1475. and SQL updates, respectively; object-preserving semantics of query
  1476. operators, which allows for the definition of updatable views; a
  1477. separation of the two aspects of programming language "classes": type
  1478. vs. collection; predicative description of collections, similar to
  1479. "defined concepts" in KL-One--like knowledge representation
  1480. languages; automatic classification of objects and views (positioning
  1481. in the class hierarchy); physical clustering of subobjects via the use
  1482. of nested relations as the internal storage structures; support for the
  1483. optimization of both, the physical DB design and query transformation,
  1484. by corresponding optimizers.
  1485.  
  1486. Project goals are:
  1487.  
  1488. - to develop a general formal framework for investigations of all
  1489.   kinds of schema changes in object-oriented database systems
  1490.   (including schema design, schema modification, schema tailoring, and
  1491.   schema integration);
  1492. - to find implementation techniques for evolving database schemas,
  1493.   such that changes on the logical level propagate automatically to
  1494.   adaptations of the physical level (without the need to modify all
  1495.   instances, if possible).
  1496.  
  1497. In their current paper [see below], schema evolution is used as
  1498. example of a general framework for change in OODBs, supporting change
  1499. on three levels of database objects: data objects, schema objects, and
  1500. meta-schema objects.
  1501.  
  1502. Contact: Markus Tresch <tresch@informatik.uni-ulm.de>
  1503.  
  1504.  
  1505. REFERENCES:
  1506.         M. Tresch and M.H. Scholl. "Meta Object Management
  1507.         and its Application to Database Evolution."  In
  1508.         _Proceedings of the Eleventh International
  1509.         Conference on the Entity-Relationship Approach",
  1510.         Karlsruhe, Germany, Oct 1992.  Springer Verlag (to
  1511.         appear).
  1512.